package cn.hh.controller;

import cn.hh.basic.util.AjaxResult;
import cn.hh.basic.util.FastDfsUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 *  上传接口:1 - Post
 *  下载:不需要
 *  删除:1 - Delete
 *  修改: = 删除 + 上传
 */
@RestController
@RequestMapping("/fastdfs")  // 请求地址
public class FastDfsController {

    /**
     * 上传接口
     * @param file
     * @return
     */
    @PostMapping // Post请求
    // el-upload提供的文件上传框默认的name="file"
    public AjaxResult upload(@RequestParam MultipartFile file){
        try{   // 获取原始文件名
            String originalFilename = file.getOriginalFilename(); // 404.png
            // 原始文件名调用方法截取.结束,获得后缀: /group1/M00/00/09/rBEACmKXF8-AUc6KAANsldwx3H4713.jpg
            String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1); // + 1是包前不包后
            // 调用FastDfsUtils工具类调用上传方法upload()传入后缀名对象
            String filename = FastDfsUtils.upload(file.getBytes(), extName);
            // 将上传之后的名字响应给前端
            return AjaxResult.me().setResultObj(filename); // 成功
        } catch (Exception e){
            e.printStackTrace();
          return new AjaxResult(false,"上传失败");  // 失败
        }
    }

    /**
     * 删除接口
     * @param path
     * @return
     */
    @DeleteMapping
    // http://localhost8080/Department/?path=/group1/M00/00/09/rBEACmKXF8-AUc6KAANsldwx3H4713.jpg
    // 到时候前端传: /group1/M00/00/09/rBEACmKXF8-AUc6KAANsldwx3H4713.jpg
    // group1     M00/00/09/rBEACmKXF8-AUc6KAANsldwx3H4713.jpg
    public AjaxResult del(@RequestParam String path){  // 参数1.@RequestParam注解  参数2.String path
        try {
            // 使用参数path调用substring方法(含头不含尾): 截取去掉第一个"/"得到:  group1/M00/00/09/rBEACmKXF8-AUc6KAANsldwx3H4713.jpg
            String pathTem = path.substring(1);
            //  拿到组名: group1
            String group = pathTem.substring(0, pathTem.indexOf("/"));  // 获取到组名对象:group
            // 拿到文件名: M00/00/09/rBEACmKXF8-AUc6KAANsldwx3H4713.jpg
            String filePath = pathTem.substring(pathTem.indexOf("/") + 1);  // 获取到文件名对象:filePath
            // 调用FastDfsUtils的删除方法(组名对象,文件名对象)
            FastDfsUtils.delete(group,filePath);
            return new AjaxResult(); // 成功
        } catch (Exception e){
            e.printStackTrace();
            return new AjaxResult(false,"删除失败"); // 失败
        }
    }

}
